// 1. 去掉最后一位 x>>1
console.log('1:', 2 >> 1);

// 2. 在最后加一个0  x<<1
console.log('2:', 2 << 1);

// 3. 在最后位加一个1 (x<<1) + 1
console.log('3:', (2 << 1) + 1);

// 4. 把最后一位变为1  x|1
console.log('4:', 2 | 1)

// 5. 把最后一位变为0  x|1 - 1
console.log('5:', 2 | 1 - 1)

// 6. 把最后一位取反  x ^ 1
console.log('6:', 2 ^ 1)

// 7. 把右数第k位变成1, x | (1 << (k - 1))
console.log('7:', 2 | (1 << (3 - 1)))

// 8. 把右数第k位变成0，x & ~(1 << (k- 1))
console.log("8:", 2 & ~(1 << (2 - 1)))

// 9. 把右数第k位取反， x ^ (1 << (k - 1))
console.log("9:", 2 ^ (1 << 2))

// 10. 取末尾三位 x & 7
console.log("10:", 15 & 7)

// 11. 取右数第k位  x >> (k -1) & 1
console.log("11:", 2 >> (2 - 1) & 1);

// 12. 把右边连续的1变成0 x & (x + 1)
console.log("12:", 11 & 12);

// 13. 把右边连续的0变成1  x | (x - 1)
console.log("13:", 8 | 7);

// 13. 把右边第一个0变成1, x | (x + 1)
console.log("14:", 8 | 9)

// 14. 只保留右边连续的1，(x ^ (x + 1)) >> 1

console.log("15:", (11 ^ 12) >> 1);

1000
1001
